using System.Collections.Generic;

namespace Domain.Entities
{
    public class Group
    {
        private short id;
        private string name;
        private string prefix;
        private string suffix;
        private bool canViewActiveUserlist;
        private bool canViewUserlist;
        private bool canViewProfiles;
        private bool canUseSearch;
        private bool isAdministratorGroup;

        private IList<User> users;
        private IList<GroupForumPermission> groupForumPermission;

        public virtual short Id
        {
            get { return id; }
            internal set { id = value; }
        }

        public virtual string Name
        {
            get { return name; }
            internal set { name = value; }
        }

        public virtual string Prefix
        {
            get { return prefix; }
            internal set { prefix = value; }
        }

        public virtual string Suffix
        {
            get { return suffix; }
            internal set { suffix = value; }
        }

        public virtual bool CanViewActiveUserlist
        {
            get { return canViewActiveUserlist; }
            internal set { canViewActiveUserlist = value; }
        }

        public virtual bool CanViewUserlist
        {
            get { return canViewUserlist; }
            internal set { canViewUserlist = value; }
        }

        public virtual bool CanViewProfiles
        {
            get { return canViewProfiles; }
            internal set { canViewProfiles = value; }
        }

        public virtual bool CanUseSearch
        {
            get { return canUseSearch; }
            internal set { canUseSearch = value; }
        }

        public virtual bool IsAdministratorGroup
        {
            get { return isAdministratorGroup; }
            internal set { isAdministratorGroup = value; }
        }

        public virtual IList<User> Users
        {
            get { return users; }
            internal set { users = value; }
        }

        public virtual IList<GroupForumPermission> GroupForumPermission
        {
            get { return groupForumPermission; }
            internal set { groupForumPermission = value; }
        }
    }
}
